Computer systems are often the target of attacks in the form of viruses, worms, and other forms of hacker attacks. Recovery from such attacks can be costly and time-consuming, and occasionally important or valuable data may be permanently lost. It is therefore desirable to constantly improve security measures taken to prevent such attacks.
One type of hacker attack is known as an image corruption attack. A hacker can learn intimate details about typical software to be attacked by analyzing the in-memory image of the same software installed on their own local computer. Because the memory image exactly matches that of every other system running the software, the attack becomes viable.
Vulnerability to such attacks is typically viewed as the result of a coding error by the programmer(s) of an application or operating system. As a result of this view, system security must be accomplished by preventing such coding mistakes, or by repairing them (e.g. via software updates, typically referred to as “patches”) after they are discovered.
This approach to security, however, has drawbacks. Prevention of such coding mistakes adds to the complexity and labor requirements of the programming process. Preparation of patches to repair coding mistakes requires additional labor and may not be completed until after hacker attacks have already occurred.